import logging, time, os

BASE_PATH = os.path.dirname(os.path.dirname(os.path.realpath(__file__)))
# 定义日志文件路径
LOG_PATH = os.path.join(BASE_PATH, "log")
if not os.path.exists(LOG_PATH):
    os.mkdir(LOG_PATH)

class Logger():

    def __init__(self):
        """
        初始化日志系统，设置日志文件的名称和路径，配置日志记录器和处理器。
        """
        # 构造日志文件的路径和名称，基于当前日期
        self.logname = os.path.join(LOG_PATH, "{}.log".format(time.strftime("%Y%m%d")))
        # 创建一个名为"log"的记录器
        self.logger = logging.getLogger("log")
        # 设置记录器的级别为DEBUG，以便记录所有级别的日志信息
        self.logger.setLevel(logging.DEBUG)

        # 定义日志格式，包括时间、文件名、行号、日志级别和日志信息
        self.formater = logging.Formatter(
            '[%(asctime)s][%(filename)s %(lineno)d][%(levelname)s]: %(message)s')

        # 创建一个文件处理器，用于将日志信息写入文件，模式为'a'追加，编码为UTF-8
        self.filelogger = logging.FileHandler(self.logname, mode='a', encoding="UTF-8")
        # 创建一个控制台处理器，用于将日志信息输出到控制台
        self.console = logging.StreamHandler()
        # 设置控制台处理器的级别为DEBUG
        self.console.setLevel(logging.DEBUG)
        # 设置文件处理器的级别为DEBUG
        self.filelogger.setLevel(logging.DEBUG)
        # 为文件处理器设置日志格式
        self.filelogger.setFormatter(self.formater)
        # 为控制台处理器设置日志格式
        self.console.setFormatter(self.formater)
        # 将文件处理器添加到记录器中
        self.logger.addHandler(self.filelogger)
        # 将控制台处理器添加到记录器中
        self.logger.addHandler(self.console)


# 初始化日志记录器
logger = Logger().logger

if __name__ == '__main__':
    logger.info("---测试开始---")
    logger.debug("---测试结束---")
